//989数组形式的整数加法
//整数的 数组形式 num 是按照从左到右的顺序表示其数字的数组。
//
//
// 例如，对于 num = 1321 ，数组形式是 [1,3,2,1] 。
//
//
// 给定 num ，整数的 数组形式 ，和整数 k ，返回 整数 num + k 的 数组形式 。
//
//
//
//
//
//
// 示例 1：
//
//
//输入：num = [1,2,0,0], k = 34
//输出：[1,2,3,4]
//解释：1200 + 34 = 1234
//
//
// 示例 2：
//
//
//输入：num = [2,7,4], k = 181
//输出：[4,5,5]
//解释：274 + 181 = 455
//
//
// 示例 3：
//
//
//输入：num = [2,1,5], k = 806
//输出：[1,0,2,1]
//解释：215 + 806 = 1021
//
//
//
//
// 提示：
//
//
// 1 <= num.length <= 104
// 0 <= num[i] <= 9
// num 不包含任何前导零，除了零本身
// 1 <= k <= 104
//
// Related Topics 数组 数学
// 👍 195 👎 0

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class AddToArrayForm {
    public static void main(String[] args) {
        int[] num={9,9,9,9,9,9};
        int k=1;
        System.out.println(addToArrayForm(num,k));
    }
    public static List<Integer> addToArrayForm(int[] num, int k) {
        List<Integer> result=new ArrayList<Integer>();
        int klength=(k+"").length();
        int[] ks=new int[klength];
        for (int i = klength-1; i >=0; i--) {
            ks[i]=k%10;
            k=k/10;
        }
        int tempadd=0;
        if (num.length>klength){
            for (int i = 0; i < num.length; i++) {
                int temp=0;
                if (i<ks.length) {
                    temp = num[num.length - i - 1] + ks[ks.length - i - 1] + tempadd;
                }else {
                    temp=num[num.length - i - 1]+tempadd;
                }
                tempadd=0;
                if (temp<10){
                    result.add(temp);
                }else {
                    result.add(temp%10);
                    tempadd=1;
                }

            }
            if (tempadd==1){
                result.add(tempadd);
            }

        }else {
            for (int i = 0; i < klength; i++) {
                int temp=0;
                if (i<num.length) {
                    temp = num[num.length - i - 1] + ks[ks.length - i - 1] + tempadd;
                }else {
                    temp=ks[ks.length - i - 1]+tempadd;
                }
                tempadd=0;
                if (temp<10){
                    result.add(temp);
                }else {
                    result.add(temp%10);
                    tempadd=1;
                }

            }
            if (tempadd==1){
                result.add(tempadd);
            }

        }
        Collections.reverse(result);
        return result;
    }
}
